package com.xunfang.exception;

import com.xunfang.bean.Result;
import io.swagger.v3.oas.annotations.Hidden;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author yellow Doctor
 * @date 2025-09-18
 * @desc https://blog.csdn.net/hekai7217
 *
 *   这里来处理全局异常
 *      01  @RestControllerAdvice  申明 全局异常处理的类
 *      02  @ExceptionHandler + 方法
 *                 捕获指定的异常 返回 统一结果 不至于程序报错
 */
@Hidden   //swgger 和  RestControllerAdvice 这个有冲突
@RestControllerAdvice
public class GlobalExceptionControllerAdvice {

    //处理异常  ArithmeticException
    @ExceptionHandler(value = ArithmeticException.class)
    public Result handlerException1(Exception e) {
        return Result.ok("不能使用0 进行 除法运算");
    }

    //处理异常  NullPointerException
    @ExceptionHandler(value = NullPointerException.class)
    public Result handlerException2(Exception e) {
        return Result.ok("对象初始化才可以操作...");
    }

    //处理 自定义 异常
    @ExceptionHandler(value = MyException.class)
    public Result handlerException3(Exception e) {
        String message = e.getMessage();
        return Result.ok(message);
    }

    //处理 自定义 异常
    @ExceptionHandler(value = MyDeleteException.class)
    public Result handlerException4(Exception e) {
        String message = e.getMessage();
        Result ok = Result.ok();
        ok.setMessage(message);
        return ok;
    }
}
